package com.taxi.action;

import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.interceptor.ServletRequestAware;

import com.opensymphony.xwork2.ActionSupport;
import com.taxi.bean.ReservaBean;
import com.taxi.bean.UsuarioDTO;
import com.taxi.service.DisponibilidadService;
import com.taxi.service.GestionUsuarioBusinessDelegate;
import com.taxi.service.PaqueteBusinessDelegate;
import com.taxi.service.ReservaService;
import com.taxi.service.UsuarioService;
import com.taxi.util.Parsear;



public class ReservaAction extends ActionSupport  implements ServletRequestAware {


	
	private static final long serialVersionUID = 1L;
	private HttpServletRequest request;
	private boolean success;
	private ReservaBean beanReserva= new ReservaBean();
	private ReservaService reservaservice = GestionUsuarioBusinessDelegate.getReservaService();
	private UsuarioService usuarioService = PaqueteBusinessDelegate.getUsuarioService();
	private DisponibilidadService disponiblidad = GestionUsuarioBusinessDelegate.getDisponibilidadService();
    private List<ReservaBean> lstreservas = new ArrayList<ReservaBean>();
    
	
	
	
	
	
	public void setServletRequest(HttpServletRequest request) {
		// TODO Auto-generated method stub
		this.request=request;
	}

   

	public String registrarReserva() {
		
     	try {
     
     	    beanReserva.setCodigo(reservaservice.codigoAutogenerado().getCodigo());
     	    beanReserva.setFecha((String)(this.request.getParameter("fecha")));
     	    beanReserva.setHora((String)this.request.getParameter("hora"));
     	    beanReserva.setOrigen((String)this.request.getParameter("origen"));
     		beanReserva.setDestino((String)this.request.getParameter("destino"));
     		int coddidp =Integer.parseInt( this.request.getParameter("codigo")); 
     	    beanReserva.setIdChofer(disponiblidad.obtenerDatosDisponibilidad(coddidp).getCodChofer());
     	    beanReserva.setIdEmpresa(disponiblidad.obtenerDatosDisponibilidad(coddidp).getCodEmpresa());
     	    beanReserva.setIdVehiculo(disponiblidad.obtenerDatosDisponibilidad(coddidp).getCodVehiculo());
     	    beanReserva.setEstado("R");
     	    reservaservice.registrarReserva(beanReserva);
     	   
     	   disponiblidad.actualizarEstado(coddidp);
     	   
     	   cargarPunto();
     	   
				setSuccess(true);	
			} catch (Exception e) {
			e.printStackTrace();
				setSuccess(false);
				
			}
	
		return SUCCESS;
	}
    
	public String listarReservas(){
		
		
		try {
		      System.out.println("Entro en listar Reserva");
               lstreservas =  reservaservice.listarReserva();
               
				setSuccess(true);	
			} catch (Exception e) {
				e.printStackTrace();
				setSuccess(false);
				
			}
	
		return SUCCESS;
		
		
	}
	
	
	public String anularReserva(){
		
		
		try {
		      System.out.println("Entro a eliminar Reserva");
		      
               reservaservice.actualizarEstado((String)request.getParameter("codigo"));
                disponiblidad.habilitarDisponibilidad((String)request.getParameter("idChofer"));
				setSuccess(true);	
			} catch (Exception e) {
				e.printStackTrace();
				setSuccess(false);
				
			}
	
		return SUCCESS;
		
		
	}
	
	private void cargarPunto(){
		try {
			UsuarioDTO userBean = new UsuarioDTO();
			int punto = usuarioService.obtenerPuntos("CLI0000002");
			System.out.println("Puntaje: " + punto);
			punto = punto + 1;
			userBean.setCodUsuario("CLI0000002");
			userBean.setPunto(punto);
			
			usuarioService.insertarPunto(userBean);
			
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}		
	}
	
	
	public boolean isSuccess() {
		return success;
	}

	public void setSuccess(boolean success) {
		this.success = success;
	}



	public List<ReservaBean> getLstreservas() {
		return lstreservas;
	}



	public void setLstreservas(List<ReservaBean> lstreservas) {
		this.lstreservas = lstreservas;
	}
   
     



}
